<template lang="">
  <UploadExcel
    :on-success="handleSuccess"
    :before-unload="handelBeforeUnload"
  />
</template>
<script>
import { reqAddEmployBatch } from '@/api/employee'
export default {
  name: 'Import',

  computed: {
    type() { // 计算属性 应用  query 的取值 直接抛出 不用声明 直接用
      return this.$route.query.type
    }
  },
  methods: {
    // 判断 来的路径  是哪里  多组件应用  上传文件 这个组价  所以 我们取值路径
    async handleUpload(header, results) {
      if (this.type === 'user') {
        // 数据格式不对  需要转化
        // 给的一个 对象 含有 两个数组   header  表格表头  results 表格数据
        // 从此处 拿到数据
        // 得到数据 后 上传数据
        // 已知格式[{入职日期:111,姓名:"Jack"},{...},{..}]
        // 后台接收格式 :[{timeOfEntry:42255,username:'jack'},{...},{..}]
        // 转换格式
        // 对应关系  对象
        // js读取时间Excel时间格式 以1900-1-1开始的 ,并且计算的是天数
        // js中的 时间戳:1970-1-1开始 以毫秒 为单位
        const userRelations = {
          '入职日期': 'timeOfEntry',
          '手机号': 'mobile',
          '姓名': 'username',
          '转正日期': 'correctionTime',
          '工号': 'workNumber'
        }
        const newArr = [] // 最后 返回的 数组
        results.forEach(item => { // 遍历 初始数组
          const obj = {} // 声明 一个 对象   这个是 加入 二层的对象
          for (const k in item) { // 循环 二层 对象
            const englishkey = userRelations[k]
            // if()筛选出日期timeOfEntry  correctionTime
            //   if (englishkey === 'timeOfEntry' || englishkey === 'correctionTime') {
            if (['timeOfEntry', 'correctionTime'].includes(englishkey)) { // includes()包含
              obj[englishkey[k]] = this.formatExcelDate(item[k], '-')
            } else {
              obj[englishkey[k]] = item[k]
            }

            // 把上面数组 里面 对应的 需要的 键名通过键取出值 值 是需要的 键名

          // 赋值操作
          //   console.log(obj[englishkey])
          //   console.log(item[k])
          }
          newArr.push(obj)
        })
        // console.log('sssssssss', newArr)
        await reqAddEmployBatch(newArr)
        this.$message.success('上传成功')
        this.$router.push('/employees')
      }
    },
    //
    // 上传之前 的 验证
    handelBeforeUnload(file) {
    // 获得 文件数据  进行验证
    // 验证大小 从file 中 size 可看到字节 计算机 单位  byte 1kb=1024b
      const isLt1M = file.size / 1024 / 1024 < 1
      if (isLt1M) return true
      this.$message.warning('文件大于1M')
      return false
    },
    // 上传之后 的操作
    handleSuccess({ header, results }) {
      this.handleUpload(header, results)
    },
    // 日期格式转化
    formatExcelDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1) // 毫秒
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}

</script>
<style lang="scss">

</style>
